package _03_recursion.problems;

import org.junit.Test;

/**
 * @author: mornd
 * @dateTime: 2023/6/1 - 14:59
 * 递归+斐波那契数列解决兔子问题，图示
 * 1月有1对小兔子（1对），2月长大（1对），3月生一对小兔子（2对）
 *      1、老兔子不会死，并且每过1月，继续生1对小兔子
 *      2、兔子只有长大才能生小兔子
 */
public class Rabbit {
    @Test
    public void test() {
        for (int i = 1; i <= 10; i++) {
            System.out.println("月份：" + i+ "\t兔子对数：" + foo(i));
        }
    }

    /**
     *
     * @param n 月份
     * @return 兔子对数
     */
    int foo(int n) {
        if(n == 1 || n == 2) {
            // 第1个月就1对小兔子
            // 2月兔子长大，生下另1对小兔子
            return 1;
        }
        return foo(n - 1) + foo(n - 2);
    }

}
